from sqlalchemy import create_engine  # 导入SQLAlchemy引擎创建函数
from sqlalchemy.ext.declarative import declarative_base  # 导入声明式基类
from sqlalchemy.orm import sessionmaker  # 导入会话工厂

# 更新为MySQL连接字符串
# 格式: mysql+pymysql://用户名:密码@主机/数据库名
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:123456@localhost/ivids_db"  # 数据库连接URL

# 创建数据库引擎
engine = create_engine(
    SQLALCHEMY_DATABASE_URL
)

# 创建会话类，用于数据库操作
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# 创建模型基类，所有模型都将继承此类
Base = declarative_base()

# 依赖函数，用于在FastAPI路由中获取数据库会话
def get_db():
    """获取数据库会话
    
    创建一个数据库会话，并在请求结束后关闭
    
    Yields:
        Session: 数据库会话对象
    """
    db = SessionLocal()  # 创建数据库会话
    try:
        yield db  # 返回数据库会话（FastAPI会将其注入到依赖项中）
    finally:
        db.close()  # 确保会话在请求结束后关闭